package com.ito.ito.areaTrabajo.modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "proyecto")
public class Proyecto implements Serializable{
	private static final long serialVersionUID = 1L;
	//
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "idProyecto", nullable = false)
	private Long idProyecto;

	@Column(name = "nombreProyecto", nullable = false)
	private String nombreProyecto;
	
	@Column(name = "nombreEmpresa", nullable = false)
	private String nombreEmpresa;
	
	@Column(name = "giroEmpresa", nullable = false)
	private String giroEmpresa;
	
	@Column(name = "direccion", nullable = false)
	private String direccion;
	
	@Column(name = "telefono", nullable = false)
	private String telefono;
	
	@Column(name = "areaEmpresa", nullable = false)
	private String areaEmpresa;
	
	@Column(name = "nombreSolicitante", nullable = false)
	private String nombreSolicitante;
	//
	@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
	@JoinColumn(name="id_Proyecto")
	private Gplantillas gplantillas;
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinTable(name="proyecto_versiones",joinColumns={@JoinColumn(name="idProyecto")},inverseJoinColumns={@JoinColumn(name="idVersion")})
	private List<Versiones> versiones=new ArrayList<Versiones>();
	
	@ManyToMany(cascade=CascadeType.ALL)
	@JoinTable(name="usuarios_proyectos",joinColumns={@JoinColumn(name="idProyecto")},inverseJoinColumns={@JoinColumn(name="idUsuario")})
	List<Usuario> usuarios=new ArrayList<Usuario>();
	
	//gets y sets
	public String getNombreEmpresa() {
		return nombreEmpresa;
	}
	public void setNombreEmpresa(String nombreEmpresa) {
		this.nombreEmpresa = nombreEmpresa;
	}
	public String getGiroEmpresa() {
		return giroEmpresa;
	}
	public void setGiroEmpresa(String giroEmpresa) {
		this.giroEmpresa = giroEmpresa;
	}
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public String getTelefono() {
		return telefono;
	}
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	
	public Long getIdProyecto() {
		return idProyecto;
	}
	public void setIdProyecto(Long idProyecto) {
		this.idProyecto = idProyecto;
	}
	public String getNombreProyecto() {
		return nombreProyecto;
	}
	public void setNombreProyecto(String nombreProyecto) {
		this.nombreProyecto = nombreProyecto;
	}
	public Gplantillas getGplantillas() {
		return gplantillas;
	}
	public void setGplantillas(Gplantillas gplantillas) {
		this.gplantillas = gplantillas;
	}
	public List<Versiones> getVersiones() {
		return versiones;
	}
	public void setVersiones(List<Versiones> versiones) {
		this.versiones = versiones;
	}
	public List<Usuario> getUsuarios() {
		return usuarios;
	}
	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	public String getAreaEmpresa() {
		return areaEmpresa;
	}
	public void setAreaEmpresa(String areaEmpresa) {
		this.areaEmpresa = areaEmpresa;
	}
	public String getNombreSolicitante() {
		return nombreSolicitante;
	}
	public void setNombreSolicitante(String nombreSolicitante) {
		this.nombreSolicitante = nombreSolicitante;
	}
	
	
}
